import { login, getProfile, userInfo } from '@/api/user'
import { setToken, getToken } from '@/utils/auth' // 引入 token
import { resetRouter } from '@/router/index'
export default {
  namespaced: true,
  state: () => {
    return {
      token: getToken() || '', // 保存token 没有就赋值为空
      setUserInfo: {}
    }
  },
  mutations: {
    // 定义mutation去修改token
    setToken(state, newToken) {
      state.token = newToken // 修改Token
      // 调用函数 使用cookie 存储token
      setToken(newToken) // 传参newToken 存储在cookie中
    },

    // 修改用户信息
    setUserInfo(state, userinfo) {
      state.setUserInfo = userinfo // 存入vuex 中
    }

  },
  actions: {
    // 做登录 actions 发送请求
    async updataToken(context, loginForm) {
      const res = await login(loginForm)
      context.commit('setToken', res.data)
    },

    // 用户信息
    async getUserProfile(context) {
      // 1.获取用户档案信息 getUserProfile
      const res = await getProfile()
      console.log(res.data, '用户档案信息')
      // 2.获取基本信息   通过id获取用户头像  传参 id
      const info = await userInfo(res.data.userId)
      console.log(info.data, 'info')
      // 3. 合并两个对象  通过 mutations 修改数据  展开运算符 {...obj1,...obj2}
      context.commit('setUserInfo', { ...res.data, ...info.data }) // 路由跳转首页前 发送请求
      // 返回 这个对象
      return res
    },

    // 退出 清空token 和用户信息
    logout(context) {
      context.commit('setToken', '')
      context.commit('setUserInfo', {})

      // 用户退出 重置路由
      resetRouter()
    }

  }
}
